ASM_OPTION=-march=rv64gcv_zba -fno-stack-protector -fomit-frame-pointer -fno-dwarf2-cfi-asm

main_c: vec_add.c main.c
	gcc-13 -O2 -c vec_add.c -march=rv64gcv_zba
	gcc-13 -O2 -c main.c -march=rv64gcv_zba
	gcc-13 -O2 -o main_c main.o vec_add.o -march=rv64gcv_zba
	gcc-13 -S -O2 -o tmp.s vec_add.c -march=rv64gcv_zba ${ASM_OPTION}

main_asm: main.c vec_add.s
	gcc-13 -O2 -c vec_add.s -march=rv64gcv_zba
	gcc-13 -O2 -c main.c -march=rv64gcv_zba
	gcc-13 -O2 -o main_asm main.o vec_add.o -march=rv64gcv_zba

run: main_asm
	qemu-riscv64 -cpu rv64,v=true,zba=true,vlen=128,rvv_ta_all_1s=on,rvv_ma_all_1s=on ./main_asm

run_c: main_c
	qemu-riscv64 -cpu rv64,v=true,zba=true,vlen=128,rvv_ta_all_1s=on,rvv_ma_all_1s=on ./main_c

clean:
	rm -f ./main_c ./main_asm ./main.o ./vec_add.o

.PHONY: run vec_add clean
